Skip to main content

KubeEdge

KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. Kubeedge is licensed under Apache 2.0. and free for personal or commercial use. It also supports MQ Telemetry Transport (MQTT) which enables edge devices to access through edge nodes and allows developers to author custom logic and enable resource constrained device communication at the Edge. KubeEdge goal is to make an open platform to enable Edge computing, extending native containerized application orchestration capabilities to hosts at Edge, which built upon kubernetes and provides fundamental infrastructure support for network, app deployment and metadata synchronization between cloud and edge. KubeEdge can be applied on IoT, lightweight edge, multi-access edge computing (MEC) and enterprise edge and more.

KubeEdge was donated to CNCF in March 2019 and in September 2020, the project was promoted to an incubation-level hosted project and now currently have 4,000+ stars, 1,100+ forks, and more than 680 + contributors.

Challenges of Building Edge Computing Based on Kubernetes:

  • Resource constraints - A gateway device requires 128 MB of memory and Kubernetes require atleast 1 GB of memory but the resources of edge nodes are limited.
  • Poor network connection - A gateway device requires 128 MB of memory and cloud accesses the edge over public networks, which are in limited bandwidth and that brings high latency.
  • Poor support for device access and management - Lack of edge device abstraction and poor support for edge device access protocols.

Advantages by using KubeEdge:

  • Kubernetes-native support - Managing edge applications and edge devices in the cloud with fully compatible Kubernetes APIs.
  • Cloud-Edge Reliable Collaboration - Ensure reliable messages delivery without loss over unstable cloud-edge network.
  • Edge Autonomy - Ensure edge nodes run autonomously and the applications in edge run normally, when the cloud-edge network is unstable or edge is offline and restarted.
  • Edge Devices Management - Managing edge devices through Kubernetes native APIs implemented by CRD.
  • Extremely Lightweight Edge Agent - Extremely lightweight Edge Agent(EdgeCore) to run on resource constrained edge.(only requiring about 70 MB of memory).

With KubeEdge it is easy to get and deploy existing complicated machine learning, image recognition, event processing and other high level applications to the Edge. With business logic running at the Edge, much larger volumes of data can be secured & processed locally where the data is produced. With data processed at the Edge, the responsiveness is increased dramatically and data privacy is protected.

KubeEdge Architecture

The KubeEdge architecture consists of cloud, edge, and device layers

The control plane is on the cloud and the Edge nodes are at the edge.

In the Cloud Layer:

  • CloudHub: CloudHub is a communication interface module in the Cloud component. It acts as a caching mechanism to ensure changes in the Cloud part are sent to the Edge caching mechanism (EdgeHub).
  • EdgeController: EdgeController is an extended kubernetes controller which manages edge nodes and pods metadata so that the data can be targeted to a specific edge node.
  • DeviceController: DeviceController is an extended kubernetes controller which manages devices so that the device metadata/status data can be synced between edge and cloud.

At the cloud layer, the green box on the left represents a Kubernetes master. It is a native Kubernetes control plane without any changes.

On the Edge Layer:

The edge layer enables application and device management

  • EdgeHub: EdgeHub is a communication interface module to the Cloud component. It is the web socket client responsible for interacting with Cloud Service for the edge computing (like Edge Controller as in the KubeEdge Architecture).
  • Edged: Edged is an agent that runs on edge nodes and manages containerized applications.
  • EventBus: EventBus handles the internal edge communications using Message Queuing Telemetry Transport (MQTT).
  • ServiceBus: ServiceBus is a HTTP client to interact with HTTP servers (REST), offering HTTP client capabilities to components of cloud to reach HTTP servers running at edge.
  • DeviceTwin: DeviceTwin is responsible for storing device status and syncing device status to the cloud. It also provides query interfaces for applications.
  • MetaManager: MetaManager works as the message processor between edged and edgehub. It is also responsible for storing/retrieving metadata to/from a lightweight database (SQLite).

Where KubeEdge is heading:

KubeEdge is in the very early stage of adoption, but it is gaining popularity due to its flexible approach to making edge computing communications secure, reliable, and autonomous so that they won't be affected by network latency.

KubeEdge is a flexible, vendor-neutral, lightweight, heterogeneous edge computing platform. This enables it to support use cases such as data analysis, video analytics, machine learning, and more and because it is vendor-neutral, KubeEdge allows big cloud players to use it.

Contributing:

If anyone interested in being a contributor and want to get involved in developing the KubeEdge code, can see CONTRIBUTING for details on submitting patches and the contribution workflow.

References:

KubeEdege Docs: https://kubeedge.io/en/docs/ KubeEdge Github: https://github.com/kubeedge/kubeedge CNCF Blog: https://www.cncf.io/blog/2021/07/05/kubeedge-cloud-native-edge-computing/